import { onUnmounted } from 'vue'
import mitt from 'mitt'
import { flatMap } from 'lodash-es'
import { data } from 'autoprefixer'

const emitter = mitt()

/**
 * @description: 自定义接收器
 * @param {*} eventName 名称
 * @param {*} callback 回调的函数
 */
const emitterOn = (eventName, callback) => {
  emitter.on(eventName, data => {
    callback(data)
  })
}

/**
 * @description: 自定义触发器
 * @param {*} eventName 名称
 * @param {*} data 参数
 */
const emitterEmit = (eventName, data) => {
  emitter.emit(eventName, data)
}

/**
 * @description: 导出useEventbus
 */
export const useEventbus = () => {
  // 销毁的事件
  onUnmounted(() => {
    // 清空所有的事件，避免多组件互相清理
    console.log('ummounte')
    emitter.all.clear()
  })

  return {
    emitter,
    emitterOn,
    emitterEmit
  }
}
